home *** CD-ROM | disk | FTP | other *** search
- // ===============================================================
- // Vertex Program: Indoor Water
- // Description: used in indoor refractive water
- // Last Update: 28/08/2003
- // Coder: Tiago Sousa
- // ===============================================================
-
- #include "../CGVPMacro.csi"
-
- Noise
- Projected
-
- Param4f ( Name = NoisePos Comp 'time 0.4' Comp 'time 0.3' Comp = 0 User 'WaveAmplitude') // xy = wavepos, z = 0, w = amplitude
-
- VertAttributes { POSITION_3 }
-
- // setup vertex components
- MainInput
- {
- // common model view matrix
- VIEWPROJ_MATRIX,
- uniform float4 CameraPos,
- uniform float4 Constants,
- uniform float4 NoisePos,
- uniform float4 TexGenRipple0,
- uniform float4 TexGenRipple1,
- uniform float4 TexShiftRipple,
- uniform float4 TexDetailScale,
- uniform float4 BumpMatrix,
- uniform float4 pg[66] : register(c30)
- }
-
- DeclarationsScript
- {
- // vertex input
- IN_P
- // vertex output
- OUT_T0_T1
- }
-
- // output vertex position
- PositionScript = PosWaterDeform
-
- CoreScript
- {
- float4 vHPos = mul(ModelViewProj, vPos);
-
- #ifdef PROJECTEDENVBUMP
- OUT.Tex1.xz = (vHPos.xz + vHPos.w)*0.5;
- OUT.Tex1.y = (-vHPos.y + vHPos.w)*0.5;
- OUT.Tex1.w = vHPos.w;
- #endif
- #ifdef OTHER
- OUT.Tex1.x = (vHPos.x / vHPos.w + 1)*0.5;
- OUT.Tex1.y = (-vHPos.y / vHPos.w + 1)*0.5;
- #endif
-
- //OUT.Tex1.zw=1;
-
- float2 vTex;
- vTex.x = dot(vPos, TexGenRipple0);
- vTex.y = dot(vPos, TexGenRipple1);
- vTex.xy= (vTex.xy+(TexShiftRipple.xy*TexShiftRipple.zw))*TexDetailScale.xy;
-
- // output texture coordinates
- OUT.Tex0.xy = vTex.xy;
- return OUT;
- }
-